﻿using System;
using BinarySerialization;

namespace EditMode
{
    /// <summary>
    /// Edit fade instruction. 
    /// </summary> 
    [Serializable]
    public class EditFade
    {
        [FieldOrder(0)]
        public float Time { get; set; } = 0x00;

        [FieldOrder(1)]
        public float FadeID { get; set; } = 0xFF;

        [FieldOrder(2)]
        public Fade FadeType { get; set; } = 0x00;

        [FieldOrder(3)]
        public float PlaybackSpeed { get; set; } = 0x01;

        [FieldOrder(4)]
        public float StartTime { get; set; } = 0x00;

        [FieldOrder(5)]
        public float EffectProgress { get; set; } = 0x01;

        public EditFade() { }

        public EditFade(uint time, ushort fadeType)
        {
            Time = time; FadeType = (Fade)fadeType;
        }

        public bool GetIsFadeIn()
        {
            switch (FadeType)
            {
                case Fade.フェードイン_白:
                case Fade.フェードイン_黒:
                case Fade.フェードイン_赤:
                case Fade.フェードイン_緑:
                case Fade.フェードイン_青:
                case Fade.フェードイン_黄:
                case Fade.フェードイン_ピンク:
                case Fade.フェードイン_水色:
                case Fade.フェードイン_橙:
                case Fade.フェードイン_紫:
                    return true;
                case Fade.フェードアウト_白:
                case Fade.フェードアウト_黒:
                case Fade.フェードアウト_赤:
                case Fade.フェードアウト_緑:
                case Fade.フェードアウト_青:
                case Fade.フェードアウト_黄:
                case Fade.フェードアウト_ピンク:
                case Fade.フェードアウト_水色:
                case Fade.フェードアウト_橙:
                case Fade.フェードアウト_紫:
                    return false;
                case Fade.なし:
                default:
                    return false;
            }
        }
    }
}
